/**
 * 传入一个回调函数名,和参数，判断是否是函数，如果是，则回调
 * @param  {String} a 函数名
 * @param  {字符串,也可以是json字符串} b 回调函数的参数
 * @return {[type]}   [description]
 */
module.exports = {
    execCallBack: function(a, b) {
        let params = b || {};
        if (this.isfun(a)) {
            a.call(this, params);
        }
    },
    execCB: function(a, err, b) {
        let params = b || {};
        if (this.isfun(a)) {
            a.call(this, err, params);
        }
    },
    isfun: function(a) {
        if (typeof a === 'function') {
            return true;
        }
    },
    guid: function() {
        function S4() {
            return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
        }
        return (S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4());
    },
    getVerifyCode: function() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(8).substring(2);
    },
    extendObj: function() { //扩展对象
        let args = arguments; //将传递过来的参数数组赋值给args变量
        if (args.length == 1) {
            return args[0];
        };
        if (typeof args[0] !== 'object' || typeof args[1] !== 'object') {
            return;
        } else {
            Object.keys(args[1]).map(function(key) {
                args[0][key] = args[1][key];
            });
            return args[0];
        }
    },
    //实现一系列图片的预加载  
    //参数sources:图片信息关联数组  
    //参数callback:回调函数——图片预加载完成后立即执行此函数。  
    loadImages: function(sources, callback) {
        let count = 0,
            images = {},
            imgNum = 0;
        for (src in sources) {
            imgNum++;
        }
        for (src in sources) {
            images[src] = new Image();
            images[src].onload = function() {
                if (++count >= imgNum) {
                    callback(images);
                }
            }
            images[src].src = sources[src];
        }
    }
}